package com.vivo.customer.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class EventRecordExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public EventRecordExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andIdIsNull() {
            addCriterion("Id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("Id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(String value) {
            addCriterion("Id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(String value) {
            addCriterion("Id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(String value) {
            addCriterion("Id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(String value) {
            addCriterion("Id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(String value) {
            addCriterion("Id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(String value) {
            addCriterion("Id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLike(String value) {
            addCriterion("Id like", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotLike(String value) {
            addCriterion("Id not like", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<String> values) {
            addCriterion("Id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<String> values) {
            addCriterion("Id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(String value1, String value2) {
            addCriterion("Id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(String value1, String value2) {
            addCriterion("Id not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdIsNull() {
            addCriterion("FKCustomer_ID is null");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdIsNotNull() {
            addCriterion("FKCustomer_ID is not null");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdEqualTo(String value) {
            addCriterion("FKCustomer_ID =", value, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdNotEqualTo(String value) {
            addCriterion("FKCustomer_ID <>", value, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdGreaterThan(String value) {
            addCriterion("FKCustomer_ID >", value, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdGreaterThanOrEqualTo(String value) {
            addCriterion("FKCustomer_ID >=", value, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdLessThan(String value) {
            addCriterion("FKCustomer_ID <", value, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdLessThanOrEqualTo(String value) {
            addCriterion("FKCustomer_ID <=", value, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdLike(String value) {
            addCriterion("FKCustomer_ID like", value, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdNotLike(String value) {
            addCriterion("FKCustomer_ID not like", value, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdIn(List<String> values) {
            addCriterion("FKCustomer_ID in", values, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdNotIn(List<String> values) {
            addCriterion("FKCustomer_ID not in", values, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdBetween(String value1, String value2) {
            addCriterion("FKCustomer_ID between", value1, value2, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkcustomerIdNotBetween(String value1, String value2) {
            addCriterion("FKCustomer_ID not between", value1, value2, "fkcustomerId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdIsNull() {
            addCriterion("FKRoom_ID is null");
            return (Criteria) this;
        }

        public Criteria andFkroomIdIsNotNull() {
            addCriterion("FKRoom_ID is not null");
            return (Criteria) this;
        }

        public Criteria andFkroomIdEqualTo(String value) {
            addCriterion("FKRoom_ID =", value, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdNotEqualTo(String value) {
            addCriterion("FKRoom_ID <>", value, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdGreaterThan(String value) {
            addCriterion("FKRoom_ID >", value, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdGreaterThanOrEqualTo(String value) {
            addCriterion("FKRoom_ID >=", value, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdLessThan(String value) {
            addCriterion("FKRoom_ID <", value, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdLessThanOrEqualTo(String value) {
            addCriterion("FKRoom_ID <=", value, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdLike(String value) {
            addCriterion("FKRoom_ID like", value, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdNotLike(String value) {
            addCriterion("FKRoom_ID not like", value, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdIn(List<String> values) {
            addCriterion("FKRoom_ID in", values, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdNotIn(List<String> values) {
            addCriterion("FKRoom_ID not in", values, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdBetween(String value1, String value2) {
            addCriterion("FKRoom_ID between", value1, value2, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andFkroomIdNotBetween(String value1, String value2) {
            addCriterion("FKRoom_ID not between", value1, value2, "fkroomId");
            return (Criteria) this;
        }

        public Criteria andEventTypeIsNull() {
            addCriterion("Event_Type is null");
            return (Criteria) this;
        }

        public Criteria andEventTypeIsNotNull() {
            addCriterion("Event_Type is not null");
            return (Criteria) this;
        }

        public Criteria andEventTypeEqualTo(String value) {
            addCriterion("Event_Type =", value, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeNotEqualTo(String value) {
            addCriterion("Event_Type <>", value, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeGreaterThan(String value) {
            addCriterion("Event_Type >", value, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeGreaterThanOrEqualTo(String value) {
            addCriterion("Event_Type >=", value, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeLessThan(String value) {
            addCriterion("Event_Type <", value, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeLessThanOrEqualTo(String value) {
            addCriterion("Event_Type <=", value, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeLike(String value) {
            addCriterion("Event_Type like", value, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeNotLike(String value) {
            addCriterion("Event_Type not like", value, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeIn(List<String> values) {
            addCriterion("Event_Type in", values, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeNotIn(List<String> values) {
            addCriterion("Event_Type not in", values, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeBetween(String value1, String value2) {
            addCriterion("Event_Type between", value1, value2, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventTypeNotBetween(String value1, String value2) {
            addCriterion("Event_Type not between", value1, value2, "eventType");
            return (Criteria) this;
        }

        public Criteria andEventContentIsNull() {
            addCriterion("Event_Content is null");
            return (Criteria) this;
        }

        public Criteria andEventContentIsNotNull() {
            addCriterion("Event_Content is not null");
            return (Criteria) this;
        }

        public Criteria andEventContentEqualTo(String value) {
            addCriterion("Event_Content =", value, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentNotEqualTo(String value) {
            addCriterion("Event_Content <>", value, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentGreaterThan(String value) {
            addCriterion("Event_Content >", value, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentGreaterThanOrEqualTo(String value) {
            addCriterion("Event_Content >=", value, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentLessThan(String value) {
            addCriterion("Event_Content <", value, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentLessThanOrEqualTo(String value) {
            addCriterion("Event_Content <=", value, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentLike(String value) {
            addCriterion("Event_Content like", value, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentNotLike(String value) {
            addCriterion("Event_Content not like", value, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentIn(List<String> values) {
            addCriterion("Event_Content in", values, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentNotIn(List<String> values) {
            addCriterion("Event_Content not in", values, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentBetween(String value1, String value2) {
            addCriterion("Event_Content between", value1, value2, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventContentNotBetween(String value1, String value2) {
            addCriterion("Event_Content not between", value1, value2, "eventContent");
            return (Criteria) this;
        }

        public Criteria andEventProcessIsNull() {
            addCriterion("Event_process is null");
            return (Criteria) this;
        }

        public Criteria andEventProcessIsNotNull() {
            addCriterion("Event_process is not null");
            return (Criteria) this;
        }

        public Criteria andEventProcessEqualTo(String value) {
            addCriterion("Event_process =", value, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessNotEqualTo(String value) {
            addCriterion("Event_process <>", value, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessGreaterThan(String value) {
            addCriterion("Event_process >", value, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessGreaterThanOrEqualTo(String value) {
            addCriterion("Event_process >=", value, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessLessThan(String value) {
            addCriterion("Event_process <", value, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessLessThanOrEqualTo(String value) {
            addCriterion("Event_process <=", value, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessLike(String value) {
            addCriterion("Event_process like", value, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessNotLike(String value) {
            addCriterion("Event_process not like", value, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessIn(List<String> values) {
            addCriterion("Event_process in", values, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessNotIn(List<String> values) {
            addCriterion("Event_process not in", values, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessBetween(String value1, String value2) {
            addCriterion("Event_process between", value1, value2, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventProcessNotBetween(String value1, String value2) {
            addCriterion("Event_process not between", value1, value2, "eventProcess");
            return (Criteria) this;
        }

        public Criteria andEventParticipantIsNull() {
            addCriterion("Event_participant is null");
            return (Criteria) this;
        }

        public Criteria andEventParticipantIsNotNull() {
            addCriterion("Event_participant is not null");
            return (Criteria) this;
        }

        public Criteria andEventParticipantEqualTo(String value) {
            addCriterion("Event_participant =", value, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantNotEqualTo(String value) {
            addCriterion("Event_participant <>", value, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantGreaterThan(String value) {
            addCriterion("Event_participant >", value, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantGreaterThanOrEqualTo(String value) {
            addCriterion("Event_participant >=", value, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantLessThan(String value) {
            addCriterion("Event_participant <", value, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantLessThanOrEqualTo(String value) {
            addCriterion("Event_participant <=", value, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantLike(String value) {
            addCriterion("Event_participant like", value, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantNotLike(String value) {
            addCriterion("Event_participant not like", value, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantIn(List<String> values) {
            addCriterion("Event_participant in", values, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantNotIn(List<String> values) {
            addCriterion("Event_participant not in", values, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantBetween(String value1, String value2) {
            addCriterion("Event_participant between", value1, value2, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventParticipantNotBetween(String value1, String value2) {
            addCriterion("Event_participant not between", value1, value2, "eventParticipant");
            return (Criteria) this;
        }

        public Criteria andEventDateIsNull() {
            addCriterion("Event_Date is null");
            return (Criteria) this;
        }

        public Criteria andEventDateIsNotNull() {
            addCriterion("Event_Date is not null");
            return (Criteria) this;
        }

        public Criteria andEventDateEqualTo(Date value) {
            addCriterion("Event_Date =", value, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateNotEqualTo(Date value) {
            addCriterion("Event_Date <>", value, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateGreaterThan(Date value) {
            addCriterion("Event_Date >", value, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateGreaterThanOrEqualTo(Date value) {
            addCriterion("Event_Date >=", value, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateLessThan(Date value) {
            addCriterion("Event_Date <", value, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateLessThanOrEqualTo(Date value) {
            addCriterion("Event_Date <=", value, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateIn(List<Date> values) {
            addCriterion("Event_Date in", values, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateNotIn(List<Date> values) {
            addCriterion("Event_Date not in", values, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateBetween(Date value1, Date value2) {
            addCriterion("Event_Date between", value1, value2, "eventDate");
            return (Criteria) this;
        }

        public Criteria andEventDateNotBetween(Date value1, Date value2) {
            addCriterion("Event_Date not between", value1, value2, "eventDate");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIsNull() {
            addCriterion("Create_Time is null");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIsNotNull() {
            addCriterion("Create_Time is not null");
            return (Criteria) this;
        }

        public Criteria andCreateTimeEqualTo(Date value) {
            addCriterion("Create_Time =", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotEqualTo(Date value) {
            addCriterion("Create_Time <>", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeGreaterThan(Date value) {
            addCriterion("Create_Time >", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("Create_Time >=", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeLessThan(Date value) {
            addCriterion("Create_Time <", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
            addCriterion("Create_Time <=", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIn(List<Date> values) {
            addCriterion("Create_Time in", values, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotIn(List<Date> values) {
            addCriterion("Create_Time not in", values, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeBetween(Date value1, Date value2) {
            addCriterion("Create_Time between", value1, value2, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
            addCriterion("Create_Time not between", value1, value2, "createTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeIsNull() {
            addCriterion("lastMod_Time is null");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeIsNotNull() {
            addCriterion("lastMod_Time is not null");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeEqualTo(Date value) {
            addCriterion("lastMod_Time =", value, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeNotEqualTo(Date value) {
            addCriterion("lastMod_Time <>", value, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeGreaterThan(Date value) {
            addCriterion("lastMod_Time >", value, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("lastMod_Time >=", value, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeLessThan(Date value) {
            addCriterion("lastMod_Time <", value, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeLessThanOrEqualTo(Date value) {
            addCriterion("lastMod_Time <=", value, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeIn(List<Date> values) {
            addCriterion("lastMod_Time in", values, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeNotIn(List<Date> values) {
            addCriterion("lastMod_Time not in", values, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeBetween(Date value1, Date value2) {
            addCriterion("lastMod_Time between", value1, value2, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andLastmodTimeNotBetween(Date value1, Date value2) {
            addCriterion("lastMod_Time not between", value1, value2, "lastmodTime");
            return (Criteria) this;
        }

        public Criteria andAdduseridIsNull() {
            addCriterion("addUserId is null");
            return (Criteria) this;
        }

        public Criteria andAdduseridIsNotNull() {
            addCriterion("addUserId is not null");
            return (Criteria) this;
        }

        public Criteria andAdduseridEqualTo(String value) {
            addCriterion("addUserId =", value, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridNotEqualTo(String value) {
            addCriterion("addUserId <>", value, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridGreaterThan(String value) {
            addCriterion("addUserId >", value, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridGreaterThanOrEqualTo(String value) {
            addCriterion("addUserId >=", value, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridLessThan(String value) {
            addCriterion("addUserId <", value, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridLessThanOrEqualTo(String value) {
            addCriterion("addUserId <=", value, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridLike(String value) {
            addCriterion("addUserId like", value, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridNotLike(String value) {
            addCriterion("addUserId not like", value, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridIn(List<String> values) {
            addCriterion("addUserId in", values, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridNotIn(List<String> values) {
            addCriterion("addUserId not in", values, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridBetween(String value1, String value2) {
            addCriterion("addUserId between", value1, value2, "adduserid");
            return (Criteria) this;
        }

        public Criteria andAdduseridNotBetween(String value1, String value2) {
            addCriterion("addUserId not between", value1, value2, "adduserid");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}